home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Micro on the Apple Volume 1 (1981)(Micro Ink)[no boot].zip / Micro on the Apple Volume 1 (1981)(Micro Ink)[no boot].do / QUICK.int < prev    next >
Text File  |  1996-12-24  |  4KB  |  128 lines

  1. 1 REM  ************************
  2. 2 REM  *                      *
  3. 3 REM  *   SORTING REVEALED   *
  4. 4 REM  * RICHARD C. VILE, JR. *
  5. 5 REM  *                      *
  6. 6 REM  *        QUICK         *
  7. 7 REM  *                      *
  8. 8 REM  *  COPYRIGHT (C) 1981  *
  9. 9 REM  *    MICRO INK, INC.   *
  10. 10 REM  * CHELMSFORD, MA 01824 *
  11. 11 REM  *  ALL RIGHTS RESERVED *
  12. 12 REM  *                      *
  13. 13 REM  ************************
  14. 14 REM 
  15. 15 DIM A(200),STACK(24)
  16. 16 KBD=-16384:CLR=-16368:TITLE=5000:INTRO=10000
  17. 17 DISPLAY=6000:CMP=6500:DELAY=6600
  18. 18 MUSIC=-10473:TIME=766:TIMBRE=765:PITCHY=767
  19. 20 TEXT :CALL -936
  20. 40 GOSUB INTRO
  21. 50 GOSUB TITLE
  22. 100 FOR I=0 TO N-1
  23. 105 A(I)= RND (100):X=I:GOSUB DISPLAY
  24. 110 NEXT I
  25. 115 A(N+1)=32767
  26. 120 P=0:Q=N
  27. 125 TOP=0:MAXTP=0
  28. 130 IF P>=Q THEN 170
  29. 135 K=Q+1
  30. 137 VTAB 23:TAB 34:PRINT "P= ";:IF P<100 THEN PRINT " ";:IF P<10 THEN PRINT " ";:PRINT P
  31. 138 TAB 34:PRINT "Q= ";:IF K<100 THEN PRINT " ";:IF K<10 THEN PRINT " ";:PRINT K;
  32. 139 GOSUB 1145
  33. 140 IF J-P<Q-J THEN 150
  34. 143 GOSUB 400
  35. 144 GOTO 160
  36. 150 GOSUB 500
  37. 160 TOP=TOP+2
  38. 161 IF TOP>MAXTP THEN MAXTP=TOP
  39. 162 VTAB 24:TAB 23:PRINT (TOP/2);
  40. 163 IF  PEEK (KBD)>=128 THEN GOSUB 8000
  41. 165 GOTO 130
  42. 170 IF TOP=0 THEN 208
  43. 175 Q=STACK(TOP):P=STACK(TOP-1):TOP=TOP-2
  44. 176 GOSUB 7500
  45. 177 VTAB 24:TAB 23:PRINT (TOP/2);
  46. 179 IF  PEEK (KBD)>=128 THEN GOSUB 8000
  47. 180 GOTO 130
  48. 208 VTAB 24:TAB 4:PRINT "FINISHED";
  49. 209 TAB 15:PRINT "MAXTOP= ";(MAXTP/2);
  50. 210 IF  PEEK (KBD)<128 THEN 210
  51. 220  POKE CLR,0:CALL -936:GOTO 40
  52. 400 STACK(TOP+1)=P
  53. 405 STACK(TOP+2)=J-1
  54. 410 P=J+1
  55. 415 GOSUB 7000
  56. 499 RETURN 
  57. 500 STACK(TOP+1)=J+1
  58. 505 STACK(TOP+2)=Q
  59. 510 Q=J-1
  60. 515 GOSUB 7000
  61. 599 RETURN 
  62. 1145 V=A(P):I=P:J=K
  63. 1160 J=J-1:IF A(J)<=V THEN 1170
  64. 1162 GOSUB DELAY
  65. 1165 GOSUB CMP:GOTO 1160
  66. 1170 I=I+1:IF A(I)>=V THEN 1180
  67. 1172 GOSUB DELAY
  68. 1175 GOSUB CMP:GOTO 1170
  69. 1180 IF J<=I THEN 1200
  70. 1185 TEMP=A(I)
  71. 1186 A(I)=A(J):X=I:GOSUB DISPLAY
  72. 1188 A(J)=TEMP:X=J:GOSUB DISPLAY
  73. 1195 IF  PEEK (KBD)<128 THEN 1160
  74. 1196 GOSUB 8000
  75. 1199 GOTO 1160
  76. 1200 A(P)=A(J):X=P:GOSUB DISPLAY
  77. 1202 A(J)=V:X=J:GOSUB DISPLAY
  78. 1999 RETURN 
  79. 5000 TEXT :CALL -936
  80. 5010 VTAB 1:FOR I=0 TO 9:TAB 7+3*I:PRINT I;:NEXT I
  81. 5020 VTAB 2:TAB 7:FOR I=0 TO 9:PRINT "---";:NEXT I
  82. 5030 FOR J=0 TO 19:VTAB 3+J:TAB 3
  83. 5040 VTAB 23:TAB 3:PRINT "QUCKSORT PARTITION=======>"
  84. 5045 VTAB 24:TAB 15:PRINT "PENDING:0";
  85. 5050 VTAB 5:TAB 39:PRINT "S":TAB 39:PRINT "T":TAB 39:PRINT "A":TAB 39:PRINT "C":TAB 39:PRINT "K"
  86. 5060 FOR R=10 TO 22:TAB 39:PRINT ".":NEXT R
  87. 5099 RETURN 
  88. 6000 COL=X MOD 10
  89. 6010 ROW=X/10
  90. 6020  POKE 50,63
  91. 6030 VTAB ROW+3:TAB 7+3*COL
  92. 6040 IF A(X)<10 THEN PRINT " ";
  93. 6050 PRINT A(X);
  94. 6060  POKE 50,255
  95. 6070 VTAB ROW+3:TAB 7+3*COL
  96. 6080 IF A(X)<10 THEN PRINT " ";
  97. 6090 PRINT A(X);
  98. 6100 REM  ***TO REMOVE INT SOUND, 6101 INSERTED***
  99. 6101 RETURN 
  100. 6110  POKE PITCH,49: POKE TIME,3:CALL MUSIC
  101. 6199 RETURN 
  102. 6500 REM  ***TO REMOVE COMP. SOUNDS, 6501 INSERTED***
  103. 6501 RETURN 
  104. 6510  POKE PITCH,10: POKE TIME,5:CALL MUSIC
  105. 6599 RETURN 
  106. 6600 FOR DE=0 TO PDL (1):NEXT DE
  107. 6699 RETURN 
  108. 7000 VTAB 21-TOP:TAB 37
  109. 7005 TOS=STACK(TOP+1):NOS=STACK(TOP+2)
  110. 7010 IF NOS<100 THEN PRINT " ";:IF NOS<10 THEN PRINT " ";:PRINT NOS
  111. 7015 TAB 37:IF TOS<100 THEN PRINT " ";:IF TOS<10 THEN PRINT " ";:PRINT TOS;
  112. 7499 RETURN 
  113. 7500 VTAB 21-TOP:TAB 37:PRINT "  ":TAB 37:PRINT "  ";
  114. 7999 RETURN 
  115. 8000  POKE CLR,0
  116. 8005 IF  PEEK (KBD)<128 THEN 8005
  117. 8010  POKE CLR,0
  118. 8099 RETURN 
  119. 10000 VTAB 10:TAB 5:PRINT "I WILL SORT UP TO 100 POSITIVE"
  120. 10010 TAB 5:PRINT "INTEGERS INTO ASCENDING"
  121. 10020 TAB 5:PRINT "ORDER USING HOARE'S QUICKSORT."
  122. 10030 VTAB 15:TAB 10:INPUT "VALUE OF N PLEASE",N
  123. 10040 IF N>0 THEN 10060
  124. 10050 TEXT :CALL -936:END 
  125. 10060 IF N<=199 THEN RETURN 
  126. 10070 TAB 10
  127. 10080 PRINT "TOO BIG!!!!!":GOTO 10000
  128.